//  处理加载来的字典项 - 按需加载 - 浏览器缓存
import { getDict } from '@/api/index.js';

import { ref, reactive } from "vue";

export const dicts = ref({}); //  记录所有加载过的字典项，并进行缓存

//  全部按照 批量加载字典项处理 - 
/**
  获取字典项 - 批量加载获取
  @param arr Array 字典项名称集合
*/
export function getDicts(arr = []) {
  const temp = dicts.value; //  记录引用值
  return Promise.all(arr.map(async _name => {
    if (temp[_name]) {
      return temp[_name];
    }

    return await setDict(_name);
  }))
}

export async function setDict(name) {
  const temp = dicts.value;
  if (!temp[name]) {
    temp[name] = [];  //  初始化
    const { code, data } = await getDict({ dictName: name });
    if (code === 200) {
      return temp[name] = data;
    }
  }
}